The present invention relates to the field of system networks, and, more particularly, to methods and systems for converting data transmitted across a network from a first representation to a second representation.
Hypertext Transfer Protocol (HTTP) is a network protocol used to deliver most resources on the so-called xe2x80x9cWorld Wide Web.xe2x80x9d A resource is a chunk of information that can be identified by a universal resource locator (URL). The most common kind of resource is a file, but a resource can also be a dynamically-generated query result, the output of a CGI script, as well as various other types of data structures.
When a HTTP client opens a connection and sends a request message to an HTTP server, the server usually returns a response containing the resource that was requested. The format of the request and the response are generally similar. Both kinds of messages typically include an initial line, zero or more header lines, a blank line, and an optional message body. The initial line, called the status line, provides the HTTP version, a computer readable status code and a human readable phrase describing the status code. The header lines provide information about the data sent in the message body. If a HTTP response includes the resource that was requested in the response""s message body, there are usually header lines in the response that describe the body.
A client may be connected to a server directly or through one or more intermediaries. For example, a client may choose to use one or more HTTP proxy servers as intermediaries. A proxy server is a relay computer system that is located somewhere on a network path between a server and client computers. A proxy server receives requests from clients, and forwards those requests to the intended servers. Any response from the servers also passes back through the proxy server then to clients. A proxy server thus performs functions of both a client and a server. Often, proxy servers have high bandwidth connections to servers and low bandwidth connections to clients. Thus, part of a proxy server""s duties may be to convert a high-resolution response from the server to a low-resolution response for the client so that the response can be more efficiently transferred to and displayed at the client. A client may explicitly specify to the proxy server its preference to receive high or low resolution responses. For details, see the explanation provided in the article entitled xe2x80x9cAdapting to Network and Client Variation Using Active Proxies: Lessons and Perspectives,xe2x80x9d by Armando Fox, Steven D. Gribble, Yatin Chawathe, and Eric A. Brewer, Special issue of IEEE Personal Communications on Adaption, August 1998, which is hereby incorporated by reference as background information. If a client is directly connected to servers (i.e., without using proxy servers), the client may convert a response from a high resolution representation to a low resolution representation in order to display the response on a low resolution display.
Clients vary along many axes, including screen size, color depth, effective bandwidth, processing power, and ability to handle specific data encodings, e.g., GIF PostScript, or MPEG. A typical server response may include text, graphic images, audio data, video data or other multimedia contents. When converting a response, the proxy server or client has many options. For example, if a response includes graphic images, the size and resolution of the image may be reduced. In addition, the number of colors and me spatial frequencies of the image may also be reduced. If a response includes a plurality of graphic images, the order in which the images are sent to a client can be rearranged. If a response includes audio data, the audio data can be compressed or sampled at a lower rate. If a response includes video data, the frame rate may be reduced. Furthermore, large pages can be partitioned into multiple connected sub-pages.
Some existing systems attempt to convert server responses from one representation to another representation that is more suitable for transmission to and displaying at client computers. Representation conversion is sometimes referred to as xe2x80x9ctranscodingxe2x80x9d or xe2x80x9cdistillation.xe2x80x9d It is known in the art that transcoding is distinct from xe2x80x9ccompression.xe2x80x9d Transcoding is typically lossy while compression may or may not be lossy. Lossy conversions often cause data degradation, and so a transcoding system should strike a balance between the amount of degradation and the decrease in the size of the representation.
In one type of existing system, where a client communicates with an origin server (the original source of the content) via a proxy server, the proxy server has a limited set of page conversion procedures that it applies to convert any received responses. Since the proxy server has a finite set of page conversion procedures for all incoming web pages, these page conversion procedures may be inadequate for conversion of some responses. Examples of such systems include the TranSend service of the GloMop (Global Mobile Computing by Proxy) project and the MeGA (the Media Gateway Architecture).
In another type of existing system, servers may provide instance-specific instructions to proxy servers or clients. An example of this type of existing system is described in the following article which is hereby incorporated by reference as background information: A Survey of active Network Research, David L. Tennenhouse, Jonathan M. Smith, W. David Sincoskie, David J. Wetherall, and Gary J. Minden; IEEE Communications Magazine, Vol. 35, No. 1, pp 80-86. January 1997. Although servers in the systems described in this article do provide some instance-specific instructions, these instructions are primarily provided at the data packet level, which is the lowest level of the network. Namely, these instructions are applicable per data packet (which constitutes portions of a response) transferred across the network, but do not apply to the requested response as a whole. In addition, the instructions are implemented by switches or routers within the network; thus, utilizing this type of system can exacerbate transmission congestion across the network.
Another type of existing system is described in the following article, which is hereby incorporated by reference as background information: On Active Networking and Congestion, Technical Report GIT-CC-96-02, Samrat Bhattacharjee, Kenneth L. Calvert and Ellen W. Zegura; College of Computing, Georgia Tech. 1996. The system described in this referenced article preferentially drops low-priority data packets in a data stream. Some data packets are dropped when a network becomes congested. One major disadvantage of this type of systems is the likelihood that valuable data packets may be dropped. Priority policies are implemented at the data packet level by switches or routers; thus, this type of systems increases the work load of switches and routers and could increase network congestion.
Another type of existing system converts web contents to formats displayable on low-resolution screens. An example of this type of system is WebTV. WebTV allows users to browse web sites by using a standard TV screen as the display. Since television screens typically have lower resolution than most computer monitors (also called computer screens), WebTV converts various types of web content to formats suitable for display on television screens. Typically, this type of system uses a generic conversion procedure to convert all web pages to xe2x80x9ctelevision pages,xe2x80x9d without regard to the content of the page(s) being converted. Thus, the same conversion procedure is used to convert photographs, texts, graphic charts of data, and so on. Thus, the format conversion performed by such system is neither instance-specific nor content-specific.
Another type of existing system, described in U.S. patent application Ser. No. 09/048,652, entitled xe2x80x9cMethod for Dynamically Adapting Web Content and Presentation to Network Conditions,xe2x80x9d filed by Jeffrey Mogul and Lawrence Brakmo on Mar. 16, 1998, which issued as U.S. Pat. No. 6,243,761 on Jun. 5, 2001. This application is hereby incorporated by reference as background information. In the system as described in the referenced application, the origin server has the burden of adapting content for a particular client. There are several disadvantages to this system. First, in many information distribution systems the origin server is not set up to receive and retain information about each particular client""s display capabilities, often because doing so would be expensive and impractical. Second, the origin server may not have enough resources to perform all the necessary representation conversions for a large number of clients having different display capabilities.
In summary, there remains a need for an information distribution system that is configured to handle a variety of representation conversions that take into account both the display capabilities of client devices as well as the content of the images or other data being converted.
This invention provides methods and systems for converting data from a first representation to a second representation in a network environment. An exemplary method includes the steps of receiving from a server a response to a request, the request having been sent by at least one client to the server; retrieving a representation conversion program, the representation conversion program having been specified in the response; and applying the representation conversion program to convert the response from a first representation thereof to a second representation thereof. In one embodiment, the exemplary method also includes the step of sending the converted response to at least one client. In another embodiment, the step of receiving a response occurs substantially concurrently with the step of retrieving a representation conversion program. In an exemplary embodiment, the representation conversion program is specified in a header portion of the response from the server. In an exemplary embodiment, the step of retrieving a representation conversion program includes retrieving the program from a local cache in the proxy server or the client computer. In another exemplary embodiment, the step of retrieving a representation conversion program includes downloading the program from a location remote from the proxy server or the client computer. Examples of the representation conversion program include applets written in a Java language and programs written in a TCL language. Typically, the converted (second) representation requires less network bandwidth to transfer within the network environment than the first representation. Alternately, the second representation might be more suitable for the client""s use than the original representation. For example, the only type of video data usable by the client system might PAL video data, while the server may generate NTSC video data. The transcoding in this example would convert NTSC video data to PAL video data, which is not intended to change the size of the data, but rather removes the burden of conversion from a client system that might not have the ability to perform the conversion.
The exemplary method of the present invention may be performed by a proxy server, a client computer or any other suitable device.
Another exemplary method for converting data from a first representation to a second representation in a network environment includes the steps of receiving a request from at least one client; specifying a representation conversion program in a response to the request; and sending the response to a destination. The specified representation conversion program can be used by a computer at the destination to convert the response from a first representation thereof to a second representation thereof. In an exemplary embodiment, the response includes data having an associated content type. In this embodiment, the step of specifying a representation conversion program includes selecting one of a set of representation conversion programs based on the content type.
Yet another exemplary method for converting data representation in a network environment includes the steps of receiving a request from at least one client; specifying at least one directive statement in a response to the request; and sending the response to a destination. The response can be converted by a computer at the destination from a first representation thereof to a second representation thereof in accordance with the at least one directive statement.
Another exemplary method for converting data representation in a network environment includes the steps of receiving from a server a response to a request, the request having been sent by at least one client to the server; determining at least one directive statement from the response; and executing the at least one directive statement to convert the response from a first representation thereof to a second representation thereof. In one embodiment, the step of receiving a response occurs substantially concurrently with the step of determining at least one directive statement.
An exemplary computer program product for converting data from a first representation to a second representation in a network environment, includes a computer readable storage medium and a computer program mechanism embedded therein. The computer program mechanism includes logic code for receiving from a server a response to a request, the request having been sent by at least one client to the server; logic code for retrieving a representation conversion program, the representation conversion program having been specified in the response; and logic code for applying the representation conversion program to convert the response from a first representation thereof to a second representation thereof. In one embodiment, the computer program product also includes logic code for sending the converted response to at least one client. In an exemplary embodiment, the logic code for receiving a response is executed substantially concurrently with the logic code for retrieving a representation conversion program. In an exemplary embodiment, the representation conversion program is specified in a header portion of the response from the server. In another exemplary embodiment, the logic code for retrieving a representation conversion program includes logic code for retrieving the program from a local cache in a proxy server or a client computer. In another exemplary embodiment, the logic code for retrieving a representation conversion program includes logic code for downloading the specified program from a location remote from a proxy server or a client computer. The representation conversion program includes an applet written in the Java language, a program written in the TCL language and programs written in other suitable languages. In a preferred embodiment, the second representation requires less network bandwidth to transfer within the network environment than the first representation. In another preferred embodiment, the second representation has a format more suitable for use by the client computer than the first representation.
Another exemplary computer program product for converting data from a first representation to a second representation in a network environment includes logic code for receiving a request from at least one client; logic code for specifying a representation conversion program in a response to the request; and logic code for sending the response to a destination. The specified representation conversion program can be used by a computer at the destination to convert the response from a first representation thereof to a second representation thereof. In an exemplary embodiment, the response includes data having an associated content type. In this embodiment, the logic code for specifying a representation conversion program includes logic code for selecting one of a set of representation conversion programs based on the content type.
Yet another exemplary computer program product for converting data from a first representation to a second representation in a network environment includes logic code for receiving a request from at least one client; logic code for specifying at least one directive statement in a response to the request; and logic code for sending the response to a destination. The response can be converted by a computer at the destination from a first representation thereof to a second representation thereof in accordance with the at least one directive statement.
Another exemplary computer program product for converting data from a first representation to a second representation in a network environment includes logic code for receiving a response to a request from a server, the request having been sent by at least one client to the server; logic code for determining at least one directive statement from the response; and logic code for executing the at least one directive statement to convert the response from a first representation thereof to a second representation thereof. In an exemplary embodiment, the logic code for receiving a response is executed substantially concurrently with the logic code for determining at least one directive statement from the response.
In an exemplary embodiment, a proxy server or a client may apply the retrieved representation conversion program to its associated response as well as to other responses. For this reason the program is preferably saved in a cache for future access. Saving the program in a cache improves efficiency by minimizing future retrieval time. In another exemplary embodiment, each response can be saved in a response cache.
One objective of this invention is to provide, with minimal overhead, methods and computer program products that obtain and apply specific advice and instructions from a server to convert the representation of a specific response from a first representation to a second representation, where the second representation is more efficient to transfer to and/or more suitable to display at a client computer. This invention optimizes efficiency and convenience without creating undue harm to the utility and aesthetic properties of the content.